Impacto de los escándalos de corrupción en el desempeño electoral de partidos políticos en elecciones regionales en Perú (2018)
La corrupción afecta la confianza en las instituciones. Analizar si los votantes penalizan la corrupción electoralmente permite entender el nivel de madurez cívica en contextos democráticos. En el plano práctico, Perú ha atravesado numerosos escándalos de corrupción entre 2011 y 2018, que involucraron tanto a partidos nacionales como a movimientos regionales. Evaluar si esos escándalos afectaron el voto en las elecciones regionales de 2018 ayuda a comprender mejor el comportamiento electoral y la eficacia del control ciudadano.Esta investigación busca explorar si las organizaciones políticas involucradas en corrupción obtienen menor apoyo electoral.
¿Los partidos políticos y movimientos regionales involucrados en escándalos de corrupción obtuvieron peores resultados electorales en las elecciones regionales de 2018 en Perú?
Los partidos o movimientos regionales vinculados a escándalos de corrupción previos a 2018 recibieron una menor proporción de votos en las elecciones regionales de ese año, en comparación con aquellos que no estuvieron involucrados.
Se utilizaron técnicas de análisis descriptivo, regresión lineal y clusterización, a partir de una base consolidada de datos públicos.
Rows: 315
Columns: 13
$ organizacion_politica <chr> "MOVIMIENTO REGIONAL FUERZA AMAZONENSE", "MOVIM…
$ departamento <chr> "Amazonas", "Amazonas", "Amazonas", "Amazonas",…
$ votos_validos <dbl> 24.43, 9.56, 45795.00, 24.91, 9.28, 5.15, 3.94,…
$ votos_emitidos <dbl> 18.73, 7.33, 13.83, 45919.00, 45998.00, 3.95, 4…
$ total <dbl> 41358, 16188, 30545, 42166, 15715, 8721, 6662, …
$ involucrado_corrupcion <dbl> 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0,…
$ antiguedad <dbl> 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 1, 3, 3,…
$ tipo_organizacion <dbl> 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1,…
$ participacion_previa <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,…
$ presencia_multiregion <dbl> 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,…
$ nivel_urbanizacion <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,…
$ padron_electoral <dbl> 290266, 290266, 290266, 290266, 290266, 290266,…
$ educacion_promedio <dbl> 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.6, 9.…
Call:
lm(formula = log_votos ~ involucrado_corrupcion + tipo_organizacion +
participacion_previa + nivel_urbanizacion + educacion_promedio +
presencia_multiregion + antiguedad, data = data)
Residuals:
Min 1Q Median 3Q Max
-3.6751 -1.9910 -1.2693 -0.3926 8.3058
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.5927 3.6074 0.442 0.659
involucrado_corrupcion 0.1857 0.4327 0.429 0.668
tipo_organizacion 0.7204 0.6794 1.060 0.290
participacion_previa 0.3661 1.3101 0.279 0.780
nivel_urbanizacion -0.5771 0.4362 -1.323 0.187
educacion_promedio 0.2033 0.4115 0.494 0.622
presencia_multiregion NA NA NA NA
antiguedad -0.1689 0.6339 -0.266 0.790
Residual standard error: 3.443 on 308 degrees of freedom
Multiple R-squared: 0.02157, Adjusted R-squared: 0.002513
F-statistic: 1.132 on 6 and 308 DF, p-value: 0.3435
Se estimó un modelo de regresión lineal para analizar el efecto de distintas variables sobre la cantidad de votos válidos obtenidos por los candidatos (transformada logarítmicamente para corregir sesgo por valores extremos).
Los resultados del modelo indican que ninguna de las variables incluidas presenta un efecto estadísticamente significativo al 95% de confianza. Además, el modelo explica una proporción muy baja de la variabilidad total de los votos válidos (R² = 0.02).
Una posible explicación es que los votos válidos están influenciados por factores no incluidos en el modelo (como notoriedad pública, presupuesto de campaña, cobertura mediática, etc.), o que la información disponible no presenta variación suficiente.
Se recomienda probar modelos con otras combinaciones de variables o incluir interacciones para captar efectos más complejos.
Este análisis tiene como objetivo agrupar a las organizaciones políticas en función de sus características estructurales y de contexto, como educación promedio, nivel de urbanización, antigüedad, participación previa, etc., para identificar posibles perfiles o patrones comunes entre ellas.
Los clústeres encontrados permiten identificar grupos de organizaciones políticas con características similares. Esto puede sugerir que ciertos perfiles estructurales (por ejemplo, partidos con alta educación y presencia multirregional) tienden a agruparse, lo que podría ser útil para análisis posteriores o estrategias políticas.
El presente análisis exploró la relación entre el involucramiento en casos de corrupción y la cantidad de votos válidos obtenidos por los candidatos en las elecciones regionales de Perú en 2018.
En el análisis descriptivo, se observó que la mayoría de candidatos no estaban involucrados en casos de corrupción, aunque algunas organizaciones políticas concentraban una mayor proporción de estos casos.
En el análisis bivariado, no se encontraron diferencias claras en la distribución de votos válidos entre candidatos involucrados o no en corrupción. A través del modelo de regresión, se comprobó que ninguna de las variables incluidas (corrupción, tipo de organización, antigüedad, nivel de urbanización, educación, entre otras) tuvo un efecto estadísticamente significativo sobre los votos válidos.
Estos resultados sugieren que el involucramiento en corrupción, al menos según los datos disponibles, no tuvo un impacto claro en los resultados electorales. Esto podría indicar una baja sensibilidad del electorado frente a este tema o una falta de información pública al respecto. No obstante, se recomienda ampliar el análisis con más variables y datos cualitativos.
---
title: "Dashboard: Corrupción y Votos en Elecciones Perú 2018"
author: "Ulix Arispe"
date: "`r Sys.Date()`"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme: readable
source_code: embed
---
# Introducción
### Tema de Investigación
Impacto de los escándalos de corrupción en el desempeño electoral de partidos políticos en elecciones regionales en Perú (2018)
### Justificación del Tema
La corrupción afecta la confianza en las instituciones. Analizar si los votantes penalizan la corrupción electoralmente permite entender el nivel de madurez cívica en contextos democráticos. En el plano práctico, Perú ha atravesado numerosos escándalos de corrupción entre 2011 y 2018, que involucraron tanto a partidos nacionales como a movimientos regionales. Evaluar si esos escándalos afectaron el voto en las elecciones regionales de 2018 ayuda a comprender mejor el comportamiento electoral y la eficacia del control ciudadano.Esta investigación busca explorar si las organizaciones políticas involucradas en corrupción obtienen menor apoyo electoral.
### Variable dependiente
- Desempeño electoral (**votos_validos**): cantidad de votos válidos obtenidos por organización política
### Variables independientes
1. Involucramientos en corrupción (involucrado_corrupcion)
2. Antigüedad del partido (antiguedad)
3. Tipo de organización (tipo_organizacion)
4. Participación anterior en elecciones (participacion_previa)
5. Presencia en múltiples regiones (presencia_multiregion)
### Variable de control
1. Nivel de urbanización de la región (nivel_urbanizacion)
2. Tamaño del padrón electoral (padron_electoral)
3. Nivel de educación promedio regional(educacion_promedio)
### Pregunta de Investigación
¿Los partidos políticos y movimientos regionales involucrados en escándalos de corrupción obtuvieron peores resultados electorales en las elecciones regionales de 2018 en Perú?
### Hipótesis
Los partidos o movimientos regionales vinculados a escándalos de corrupción previos a 2018 recibieron una menor proporción de votos en las elecciones regionales de ese año, en comparación con aquellos que no estuvieron involucrados.
### Metodología
Se utilizaron técnicas de análisis descriptivo, regresión lineal y clusterización, a partir de una base consolidada de datos públicos.
## Limpieza de la base de datos
```{r setup, include=FALSE}
library(tidyverse)
library(readr)
library(DT)
library(corrr)
library(cluster)
library(factoextra)
library(psych)
library(GGally)
library(caret)
library(flexdashboard)
library(plotly)
```
```{r cargar_datos}
url <- "https://raw.githubusercontent.com/ulixarispe/corrupcion_votos_peru_2018/main/base_consolidada.csv"
data <- read_csv(url)
# Ver columnas
glimpse(data)
# Eliminar NAs y asegurarse de que las variables sean numéricas donde corresponde
data <- data %>%
drop_na() %>%
mutate(
involucrado_corrupcion = as.numeric(involucrado_corrupcion),
antiguedad = as.numeric(antiguedad),
participacion_previa = as.numeric(participacion_previa),
presencia_multiregion = as.numeric(presencia_multiregion),
nivel_urbanizacion = as.numeric(nivel_urbanizacion),
padron_electoral = as.numeric(padron_electoral),
educacion_promedio = as.numeric(educacion_promedio),
votos_validos = as.numeric(votos_validos)
)
```
---
# Análisis Descriptivo {.icon-chart-bar}
## Distribución de votos válidos
```{r hist-votos}
library(dplyr)
library(ggplot2)
library(plotly)
data %>%
mutate(tuvo_votos = ifelse(votos_validos > 0, "Sí tuvo votos", "No tuvo votos")) %>%
count(tuvo_votos) %>%
ggplot(aes(x = tuvo_votos, y = n, fill = tuvo_votos)) +
geom_col(width = 0.5) +
labs(title = "Organizaciones con o sin votos válidos", x = "¿Recibió votos?", y = "Cantidad") +
scale_fill_manual(values = c("#f03b20", "#2c7fb8")) +
theme_minimal() -> p_votos_binario
ggplotly(p_votos_binario)
```
```{r}
tabla <- data %>%
group_by(organizacion_politica, involucrado_corrupcion) %>%
summarise(cantidad = n(), .groups = "drop")
p2 <- ggplot(tabla, aes(x = cantidad, y = reorder(organizacion_politica, cantidad), fill = involucrado_corrupcion)) +
geom_col(position = "stack") +
labs(
title = "Corrupción por organización política",
y = "Organización política",
x = "Cantidad de candidatos"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.text.y = element_text(size = 4) # Aquí haces más pequeñas las etiquetas de las organizaciones
)
ggplotly(p2, height = 700)
```
## Tabla general
```{r tabla}
datatable(head(data))
```
## Estadísticas generales
```{r resumen}
summary(select(data, votos_validos, involucrado_corrupcion, antiguedad, participacion_previa, educacion_promedio))
```
---
# Análisis Bivariado {.icon-line-chart}
### Correlaciones con votos válidos
```{r correlacion}
library(ggplot2)
library(plotly)
# Opción: eliminar valores extremos si los hay
percentil_99 <- quantile(data$votos_validos, 0.99, na.rm = TRUE)
datos_filtrados <- data[data$votos_validos <= percentil_99, ]
# Gráfico ajustado con cajas más delgadas y eje X expandido
p3 <- ggplot(datos_filtrados, aes(x = involucrado_corrupcion, y = votos_validos, fill = involucrado_corrupcion)) +
geom_boxplot(width = 0.2, outlier.size = 1.5) + # cajas más angostas
scale_y_log10() +
scale_x_discrete(expand = expansion(mult = c(0.3, 0.3))) + # más espacio en eje X
labs(
title = "Votos válidos según involucramiento en corrupción (escala logarítmica)",
x = "¿Involucrado en corrupción?",
y = "Votos válidos (escala logarítmica)"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(hjust = 0.5, size = 10),
axis.text = element_text(size = 10)
)
# Mostrar con tamaño adecuado
ggplotly(p3)
```
### Gráficos de dispersión
```{r}
p_urb <- ggplot(data, aes(x = nivel_urbanizacion, y = votos_validos, fill = nivel_urbanizacion)) +
geom_boxplot(width = 0.3, outlier.size = 1.5) +
scale_y_log10() +
labs(
title = "Votos válidos según nivel de urbanización",
x = "Nivel de urbanización",
y = "Votos válidos (escala logarítmica)"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 10),
axis.text.x = element_text(angle = 45, hjust = 1)
)
ggplotly(p_urb, width = 600, height = 500)
```
### Gráfico de dispersión
```{r}
p_edu <- ggplot(data, aes(x = educacion_promedio, y = votos_validos)) +
geom_point(alpha = 0.4, color = "#2c7fb8") +
scale_y_log10() +
labs(
title = "Relación entre educación promedio y votos válidos",
x = "Educación promedio",
y = "Votos válidos (log)"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, size = 10))
ggplotly(p_edu)
```
### Gráfico de barras: Participación previa vs. corrupción
```{r}
tabla_prev <- data %>%
group_by(participacion_previa, involucrado_corrupcion) %>%
summarise(n = n(), .groups = "drop")
p_prev <- ggplot(tabla_prev, aes(x = participacion_previa, y = n, fill = involucrado_corrupcion)) +
geom_col(position = "fill") +
labs(
title = "Corrupción según participación previa",
x = "¿Participó antes?",
y = "Proporción"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, size = 10))
ggplotly(p_prev)
```
---
# Modelos de Regresión {.icon-calculator}
```{r regresion-simple}
data <- data %>%
mutate(log_votos = log1p(votos_validos)) # log(1 + votos) para evitar log(0)
```
### Modelo lineal simple
```{r}
modelo1 <- lm(log_votos ~ involucrado_corrupcion + tipo_organizacion + participacion_previa +
nivel_urbanizacion + educacion_promedio + presencia_multiregion + antiguedad, data = data)
summary(modelo1)
```
### Intepretación
Se estimó un modelo de regresión lineal para analizar el efecto de distintas variables sobre la cantidad de votos válidos obtenidos por los candidatos (transformada logarítmicamente para corregir sesgo por valores extremos).
Los resultados del modelo indican que ninguna de las variables incluidas presenta un efecto estadísticamente significativo al 95% de confianza. Además, el modelo explica una proporción muy baja de la variabilidad total de los votos válidos (R² = 0.02).
Una posible explicación es que los votos válidos están influenciados por factores no incluidos en el modelo (como notoriedad pública, presupuesto de campaña, cobertura mediática, etc.), o que la información disponible no presenta variación suficiente.
Se recomienda probar modelos con otras combinaciones de variables o incluir interacciones para captar efectos más complejos.
---
# Análisis Clúster {.icon-project-diagram}
### Análisis de clúster
#### Objetivo
Este análisis tiene como objetivo **agrupar a las organizaciones políticas** en función de sus características estructurales y de contexto, como educación promedio, nivel de urbanización, antigüedad, participación previa, etc., para identificar posibles perfiles o patrones comunes entre ellas.
```{r factorial}
# Selección de variables numéricas relevantes para el clúster
clust_data <- data %>%
group_by(organizacion_politica) %>%
summarise(
educacion_promedio = mean(educacion_promedio, na.rm = TRUE),
nivel_urbanizacion = mean(nivel_urbanizacion, na.rm = TRUE),
antiguedad = mean(antiguedad, na.rm = TRUE),
participacion_previa = mean(participacion_previa, na.rm = TRUE),
presencia_multiregion = mean(presencia_multiregion, na.rm = TRUE)
) %>%
column_to_rownames("organizacion_politica") # Necesario para clustering
# Estandarización
clust_scaled <- scale(clust_data)
```
```{r}
set.seed(123) # Para reproducibilidad
# Elegimos 3 clústeres como ejemplo (puedes probar con otros valores)
kmeans_result <- kmeans(clust_scaled, centers = 3, nstart = 25)
# Agregar la asignación de clúster a los datos originales
clust_data$cluster <- as.factor(kmeans_result$cluster)
```
```{r}
library(ggplot2)
library(plotly)
# Visualizamos con dos dimensiones principales: educación y urbanización
p_cluster <- ggplot(clust_data, aes(x = educacion_promedio, y = nivel_urbanizacion, color = cluster)) +
geom_point(size = 4) +
geom_text(aes(label = rownames(clust_data)), size = 2, vjust = -1, check_overlap = TRUE) +
labs(
title = "Clústeres de organizaciones políticas",
x = "Educación promedio",
y = "Nivel de urbanización"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
ggplotly(p_cluster)
```
### Interpretación
Los clústeres encontrados permiten identificar grupos de organizaciones políticas con características similares. Esto puede sugerir que ciertos perfiles estructurales (por ejemplo, partidos con alta educación y presencia multirregional) tienden a agruparse, lo que podría ser útil para análisis posteriores o estrategias políticas.
---
# Conclusiones y Bibliografía
## Conclusiones
### Conclusiones
El presente análisis exploró la relación entre el involucramiento en casos de corrupción y la cantidad de votos válidos obtenidos por los candidatos en las elecciones regionales de Perú en 2018.
En el análisis descriptivo, se observó que la mayoría de candidatos no estaban involucrados en casos de corrupción, aunque algunas organizaciones políticas concentraban una mayor proporción de estos casos.
En el análisis bivariado, no se encontraron diferencias claras en la distribución de votos válidos entre candidatos involucrados o no en corrupción. A través del modelo de regresión, se comprobó que ninguna de las variables incluidas (corrupción, tipo de organización, antigüedad, nivel de urbanización, educación, entre otras) tuvo un efecto estadísticamente significativo sobre los votos válidos.
Estos resultados sugieren que el involucramiento en corrupción, al menos según los datos disponibles, **no tuvo un impacto claro en los resultados electorales**. Esto podría indicar una baja sensibilidad del electorado frente a este tema o una falta de información pública al respecto. No obstante, se recomienda ampliar el análisis con más variables y datos cualitativos.
### Recomendaciones
- Ampliar el análisis incorporando variables como presupuesto de campaña, visibilidad en medios, alianzas políticas o historial judicial completo.
- Realizar estudios cualitativos sobre el comportamiento del electorado frente a candidatos involucrados en corrupción.
- Promover mayor transparencia en las campañas y difusión de información sobre antecedentes judiciales de los candidatos.
## Bibliografía
### Bibliografía
- Jurado Nacional de Elecciones (2018)
- INEI (2018)
- Poder Judicial del Perú (2018)